package dayPractice;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author Summerday
 *
 * 某校大门外长度为L的马路上有一排树，每两棵相邻的树之间的间隔都是1米。
 *
 * 我们可以把马路看成一个数轴，马路的一端在数轴0的位置，另一端在L的位置；数轴上的每个整数点，即0，1，2，……，L，都种有一棵树。
 *
 * 由于马路上有一些区域要用来建地铁。
 *
 * 这些区域用它们在数轴上的起始点和终止点表示。
 *
 * 已知任一区域的起始点和终止点的坐标都是整数，区域之间可能有重合的部分。
 *
 * 现在要把这些区域中的树（包括区域端点处的两棵树）移走。
 *
 * 你的任务是计算将这些树都移走后，马路上还有多少棵树。
 *
 * https://www.acwing.com/problem/content/description/424/
 */
public class Main422区间合并 {

    static int l, m;
    static int[][] nums;

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        l = sc.nextInt();
        m = sc.nextInt();
        nums = new int[m][2];
        for(int i = 0; i < m; i ++){
            nums[i][0] = sc.nextInt();
            nums[i][1] = sc.nextInt();
        }
        // 按左端点排序
        Arrays.sort(nums, (o1 , o2)-> o1[0] - o2[0]);
        int cnt = 0; // 表示减去的树个数
        int begin = nums[0][0] , end = nums[0][1];
        for(int i = 1; i < m; i ++){
            if(nums[i][0] <= end){
                // 更新end 为 两个end的最大值
                end = Math.max(nums[i][1], end);
            }else{
                cnt += (end - begin + 1);
                // 更新两个端点
                begin = nums[i][0];
                end = nums[i][1];
            }
        }
        int n = end - begin + 1; // 最后一个区间
        System.out.println(l + 1 - cnt - n);
    }
}
